﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using clEntidad;
using clBD;
using System.Data.OleDb;
using System.Collections;

namespace clBUS
{
    public class BUSRegistroLlave:BUSBase
    {
        public BUSRegistroLlave(String cadBD) : base(cadBD) { }
        public int  grabar(RegistroLlave elemento, Usuario usuario)
        {
            int rpta=0;
            using (OleDbConnection cn = getCn())
            {
                BDPersona bdPersona = new BDPersona(cn);
                bdPersona.grabar(elemento.persona, 0);
                if (elemento.persona.numMovil.Trim() != "")
                {
                    bdPersona.grabaMovil(elemento.persona.numDoc, elemento.persona.numMovil);
                }
                BDRegistroLlave objBDReg = new BDRegistroLlave(cn);
                objBDReg.grabarElemento("empresa", elemento.persona.empresa);
                objBDReg.grabarElemento("motivo", elemento.motivo);
                rpta = objBDReg.grabar(elemento, usuario.idLogin);
                elemento.llave.ultId = rpta;
                BDLlave bdLlave = new BDLlave(cn);
                bdLlave.grabar(elemento.llave);


            }
            return rpta;
        }
        public List<RegistroLlave> getByFec(DateTime fecha, int idLocal)
        {
            try
            {
                using (OleDbConnection cn = getCn())
                {
                    return new BDRegistroLlave(cn).getByFec(fecha, idLocal);
                }
            }
            catch (OleDbException ex)
            {
                throw new SystemException("Error al obtener registros de llaves por fecha",ex);
            }
        }
        public RegistroLlave get(int id)
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroLlave(cn).get(id);
            }
        }
        public void devolucion(int id, int idLogin, String codLlave, String observacion)
        {
            try
            {
                using (OleDbConnection cn = getCn())
                {
                    new BDRegistroLlave(cn).devolucion(id, idLogin, observacion);
                    new BDLlave(cn).devolucion(codLlave);
                }
            }
            catch (OleDbException ex)
            {
                throw new SystemException("Error al registrar devolución", ex);
            }
        }
        public ArrayList reporte()
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroLlave(cn).reporte();
            }
        }
    }
}
